package com.zxgj.datadirect.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zxgj.datadirect.entity.DataDirectOuterApply;

import java.util.List;

/**
 * 外来申请服务接口
 * 
 * @author ruoyi
 */
public interface DataDirectOuterApplyService extends IService<DataDirectOuterApply> {

    /**
     * 根据申请单号查询外来申请
     * @param applyNo 申请单号
     * @return 外来申请信息
     */
    DataDirectOuterApply getByApplyNo(String applyNo);

    /**
     * 根据目标机构编码查询待审批的外来申请
     * @param targetOrgCode 目标机构编码
     * @return 外来申请列表
     */
    List<DataDirectOuterApply> getPendingByTargetOrg(String targetOrgCode);

    /**
     * 分页查询外来申请
     * @param page 分页参数
     * @param targetOrgCode 目标机构编码
     * @param approveStatus 审批状态
     * @return 分页结果
     */
    Page<DataDirectOuterApply> getOuterApplyPage(Page<DataDirectOuterApply> page, 
                                                String targetOrgCode, 
                                                Integer approveStatus);

    /**
     * 批量审批外来申请
     * @param applyNos 申请单号列表
     * @param approveStatus 审批状态：1-通过，2-驳回
     * @param approveOpinion 审批意见
     * @param approveUser 审批人
     * @return 审批成功条数
     */
    int batchApprove(List<String> applyNos, Integer approveStatus, String approveOpinion, String approveUser);

    /**
     * 标记申请已读
     * @param applyNo 申请单号
     * @return 是否成功
     */
    boolean markAsRead(String applyNo);

    /**
     * 统计待审批数量
     * @param targetOrgCode 目标机构编码
     * @return 待审批数量
     */
    int countPendingByTargetOrg(String targetOrgCode);

    /**
     * 同步国家平台外来申请数据
     * @return 同步成功条数
     */
    int syncFromNationalPlatform();
}
